iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0

之前發文如[Container]、[Install]等用中括號括起的名稱我稱之為標籤,其實正式名稱是叫Section,之後會以Section取代標籤稱乎。
話說.network其實很精要,定義個NetworkName就可以給各容器依此共同呼叫。

# file: .config/containers/systemd/a2a-net.container
[Network]
NetworkName=a2a-network

.container引用a2a-network方式:

[Container]
Network=a2a-network

而.network的Section其實還不少,大多是遇到特別情況才需要用。
[Unit] systemd dependency
[Network] Podman network 本身設定
[Service] systemd 怎麼執行 network create
[Install] 哪個target要拉起這個 network service
[Quadlet] Quadlet generator 特殊設定

其中[Unit]、[Service]與[Install]的Section,在.container檔已有說明了。
以下是講[Network]的Section內容:

Key 用途 Podman 對應
NetworkName= 實際 Podman network 名稱 --name 的效果
Driver= network driver --driver
Subnet= 子網 CIDR --subnet
Gateway= gateway IP --gateway
IPRange= container 可分配 IP 範圍 --ip-range
IPv6= 啟用 IPv6 --ipv6
Internal= 建立 internal network --internal
DisableDNS= 關閉 Podman DNS --disable-dns
DNSServer= 指定 DNS server DNS option
Options= driver-specific option --opt
Label= network metadata label --label
NetworkDeleteOnStop= service stop 時刪除 network Quadlet 特有
PodmanArgs= 額外 podman network create 參數 原樣追加
ServiceName= 自訂產生的 systemd service 名 Quadlet 特有
  • NetworkName:可以用podman network ls指令看出。
  • Drirver:不設的話通常是bridge
  • Subnet、Gateway、IPRange、IPv6:若沒防火牆或特殊routing,可以忽略不設定。
  • Internal:預設值為false,可以連外網如FTP、DB。若改為true,各容器之間只有Network值相同可以互連。
  • DisableDNS:預設false。若設為true就是關掉podman internal DNS服務,a2a-web就無法call a2a-api。
  • DNSServer:比如容器對外要連有Domain Name的DB或FTP,而不是IP的話,透過指定DNSServer解析域外的DNS,這前提是Internal必須為false。
  • Options:取決於Driver,若是bridge通常不需設定。
  • Label:增加該服務的metadata,如:
Label=app=a2a
Label=environment=sit
  • NetworkDeleteOnStop:預設false。若設為true,執行systemctl --user stop a2a-net-network.service會刪掉a2a-net(等於podman network rm --force --ignore a2a-net),也會造成依賴a2a-net的容器強制斷網。
  • PodmanArgs:使用方式像PodmanArgs=--some-option=value,主要是給podman network create設定相關參數之用。
  • ServiceName:Quadlet允許改Service Name,若嫌a2a-net-network.service太麻煩,設定ServiceName=a2a-net,就可以這樣用systemctl:systemctl --user status a2a-netsystemctl --user status a2a-net.service,少打"-network"。

另外[Quadlet]設定如下:

[Quadlet]
DefaultDependencies=true

DefaultDependencies預設為true,可以不設。
Quadlet會自動替generated unit加一些network-online dependency。
rootless Quadlet尤其可能加:

After=podman-user-wait-network-online.service
Wants=podman-user-wait-network-online.service

除非特殊需求,毋須增加[Quadlet]這一Section。


上一篇
.container的Container標籤
系列文
Podman Quadlet-容器服務化(在單體系統到微服務之間)18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言